package com.dims_hsrc.data.service.impl;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import com.dims_hsrc.data.service.IContractTemplateService;

@Service
public class ContractTemplateServiceImpl implements IContractTemplateService {
    
    @Value("${dims-hsrc.contract}/templates")
    private String templatePath;
    
    @Override
    public List<Map<String, String>> listTemplates() {
        List<Map<String, String>> templates = new ArrayList<>();
        File templatesDir = new File(templatePath);
        
        // 确保模板目录存在
        if (!templatesDir.exists()) {
            templatesDir.mkdirs();
        }
        
        if (templatesDir.exists() && templatesDir.isDirectory()) {
            File[] files = templatesDir.listFiles((dir, name) -> 
                name.toLowerCase().endsWith(".docx") || name.toLowerCase().endsWith(".doc"));
            
            if (files != null && files.length > 0) {
                for (File file : files) {
                    Map<String, String> template = new HashMap<>();
                    template.put("name", file.getName());
                    template.put("path", file.getName()); // 只返回文件名
                    templates.add(template);
                }
            }
        }
        
        // 如果没有找到模板，添加一个默认模板
        if (templates.isEmpty()) {
            Map<String, String> defaultTemplate = new HashMap<>();
            defaultTemplate.put("name", "默认模板");
            defaultTemplate.put("path", "contract_template.docx");
            templates.add(defaultTemplate);
        }
        
        return templates;
    }

    @Override
    public String getTemplateFullPath(String templateName) {
        if (!StringUtils.hasText(templateName)) {
            return null;
        }
        
        // 构建完整的模板路径
        String fullPath = templatePath + File.separator + templateName;
        File templateFile = new File(fullPath);
        
        // 如果模板文件不存在，返回null
        if (!templateFile.exists() || !templateFile.isFile()) {
            return null;
        }
        
        return fullPath;
    }

    @Override
    public boolean isTemplateExists(String templateName) {
        if (!StringUtils.hasText(templateName)) {
            return false;
        }
        
        String fullPath = getTemplateFullPath(templateName);
        return fullPath != null;
    }

    /**
     * 复制模板文件到目标位置
     * @param templateName 模板文件名
     * @param targetPath 目标路径
     * @return 是否成功
     */
    public boolean copyTemplate(String templateName, String targetPath) {
        if (!StringUtils.hasText(templateName) || !StringUtils.hasText(targetPath)) {
            return false;
        }

        String sourcePath = getTemplateFullPath(templateName);
        if (sourcePath == null) {
            return false;
        }

        try {
            // 确保目标目录存在
            Path targetDir = Paths.get(targetPath).getParent();
            if (targetDir != null) {
                Files.createDirectories(targetDir);
            }

            // 复制文件
            Files.copy(Paths.get(sourcePath), Paths.get(targetPath));
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }
} 